package com.example.demo.util;

import java.util.List;

public interface EsSearchService<T> {
    /**
     * 创建索引
     *
     * @param tClass
     * @return
     */
    boolean createIndex(Class<T> tClass);

    /**
     * 创建索引映射
     *
     * @param tClass
     * @return
     */
    boolean putMapping(Class<T> tClass);


    /**
     * 判断一个索引是否存在
     *
     * @param tClass
     * @return
     */
    boolean existIndex(Class<T> tClass);

    /**
     * 删除索引
     *
     * @param tClass
     * @return
     */
    boolean deleteIndex(Class<T> tClass);

    /**
     * 分页请求
     *
     * @param pageParam   分页参数
     * @param boTermQuery es查询对象封装
     * @param tClass      索引类
     * @return 文档对象集合
     */
    List<T> queryList(PageParam pageParam, BoTermQuery boTermQuery, Class<T> tClass);

    /**
     * 查询高亮的分页请求
     *
     * @param pageParam       分页参数
     * @param boTermQuery     es查询对象封装
     * @param highlightFields 需要高亮的字段集合
     * @param indexName       索引名称
     * @param tClass          索引类
     * @return 文档对象集合
     */
    List<T> queryListHighlight(PageParam pageParam, BoTermQuery boTermQuery, List<String> highlightFields,
                               String indexName, Class<T> tClass);
}
